General purpose input/output (GPIO) enables an integrated circuit designer to provide generic pins that may be customized for particular applications. For example, a GPIO pin is programmable to be either an output or an input pin depending upon a user's needs. A GPIO module or peripheral will typically control groups of pins which can vary based on the interface requirement. Because of the programmability of GPIO pins, they are commonly included in microprocessor and microcontroller applications. For example, an applications processor in mobile devices may use a number of GPIO pins to conduct handshake signaling such as inter-processor communication (IPC) with a modem processor.
With regard to such handshake signaling, a sideband signal is deemed as “symmetric” if it must be both transmitted and received by a processor. If there are n symmetric sideband signals that need to be exchanged, each processor requires n*2 GPIOs (one GPIO to transmit a given signal and one GPIO to receive that signal). For example, a symmetric IPC interface between a modem processor and an application processor may comprise five signals, which translates to 10 GPIO pins being necessary for the resulting IPC signaling. The need for so many GPIO pins for IPC communication increases manufacturing cost. Moreover, devoting too many GPIOs for IPC limits the GPIO availability for other system-level peripheral interfaces. The problem cannot be solved by moving the IPC communication onto the main data bus between the processors in that certain corner conditions are then violated.
In addition to GPIO signals, it is conventional for a processor to message with external devices such as through an SPI bus having a dedicated transmit pin and receive pin. In contrast to a GPIO signal, such a messaging signal is not dedicated to a particular pin. In other words, assorted messages may be transmitted over the dedicated messaging transmit pin. The receiving device, a priori, does not know what the messaging pertains to in contrast to a GPIO signal—the GPIO signal is dedicated to a particular GPIO pin so the fact that the GPIO signal is received on the corresponding GPIO pin identifies it to the processor. But that is not the case for a messaging signal. Such signals have address bits that the processor uses to route the received messaging signal to the appropriate register. Upon registration, the processor must then interpret the registered message. The resulting need for a dedicated messaging transmit pin and a dedicated messaging receive pin adds significantly to manufacturing cost.
Accordingly, there is a need in the art for a hybrid GPIO and messaging architecture that can accommodate numerous input/output signals without requiring an excessive number of pins.